5.2. Programın Çalışma Hızı ve Karmaşıklık

Kıyaslama(Benchmarking), ile programın başarısı ölçülür.

Algoritma analizi, tasarlanan program veya fonksiyonun belirli bir işleme göre matematiksel ifadesini bulmaya dayanır.

Program çalışma hızı, program kodunun zaman açısından başarımını; karmaşıklık ise, ilgili program kodunun parametre sayısına bağlı olarak çalışma süresinin ve gerekli işlem sayısının artım miktarını gösterir. Çalışma hızını belirlemek için, biri kıyaslama, diğeri algoritma analizi olarak adlandırılan iki yol vardır:

  • Kıyaslama (Benchmarking)
  • Algoritma Analizi (Algorithm Analysis)

Birisi uygulamanın gerçekleştirilmesini, diğeri ise bir bağıntı hesabı gerektirir. Kıyaslamada söz konusu algoritma gerçekleştirilir ve örnek veri için koşturulur. Algoritma analizinde ise, belirli bir veri yapısı için, söz konusu algoritmanın analizi yapılır ve bir zaman bağıntısı bulunur. Analiz, algoritma gerçekleştirimi karmaşıklaştıkça ciddi bir matematiksel birikim gerektirir.

Kıyaslama (Benchmarking)
Kıyaslama, geliştirilen programın önceden belirlenmiş örnek giriş değerleri için çalışma hızını gösteren deneysel sınama sonucudur. Programa, giriş değerleri olarak, her olası durumu içeren örnek giriş verileri uygulanır ve bunlara karşı düşen başarı skoru elde edilir. Bu skor, çoğu zaman, belirli bir maksimum değere göre orantılanmış bir gerçel veya tamsayıdır. Örneğin en yüksek başarının 1.0 olduğu skor değerlendirmesinde başarım sınaması sonucu 0,5 veya %50 çıkarsa yarı başarımlı olarak değerlendirilir.

 

Algoritma Analizi
Algoritma analizi, tasarlanan program veya fonksiyonun belirli bir işleme göre matematiksel ifadesini bulmaya dayanır. Burada temel hesap birimi seçilir ve programın görevini yerine getirebilmesi için bu işlemden kaç adet yapılması gerektiğini bulmaya yarayan bir bağıntı hesaplanır. Eğer bu bağıntı zamanla ilgiliyle çalışma hızını, bellek gereksinimiyle ilgiliyse bellek gereksinimi ortaya koyar. Örneğin, n bağımsız değişken olmak üzere T(n) yürütme zamanını, S(n) ise bellek gereksinimi gösteren bağıntılardır. Eğer bir programın T(n) ve S(n) bağıntıları hesaplanabiliyorsa o programın çeşitli model bilgisayar üzerindeki çalışma hızı ve bellek gereksinimi kestirilebilir.